package com.team2.hospital.controller;

import com.team2.hospital.entity.Checks;
import com.team2.hospital.service.CheckService;
import com.team2.hospital.utils.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("check")
public class CheckController {
    @Autowired
    private CheckService checkService;

    /**
     * 分页模糊查询所有检查信息
     *
     * @param pageNumber 当前页码
     * @param size       每页大小
     * @param query      查询条件
     * @return 返回查询的检查信息
     */
    @RequestMapping("findAllChecks")
    public ResponseData findAllChecks(int pageNumber, int size, String query) {
        System.out.println("[findAllChecks] 请求开始，时间：" + System.currentTimeMillis() + "，pageNumber：" + pageNumber + "，size：" + size + "，query：" + query);
        // 调用 checkService 中的 findAllChecks 方法进行分页查询
        return ResponseData.success("返回所有检查信息成功", this.checkService.findAllChecks(pageNumber, size, query));
    }

    /**
     * 根据ID查询检查信息
     *
     * @param chId 检查ID
     * @return 返回对应检查信息
     */
    @RequestMapping("findCheck")
    public ResponseData findCheck(int chId) {
        System.out.println("[findCheck] 请求开始，时间：" + System.currentTimeMillis() + "，chId：" + chId);
        // 调用 checkService 中的 findCheck 方法根据检查ID查询检查信息
        return ResponseData.success("根据id查找检查成功", this.checkService.findCheck(chId));
    }

    /**
     * 增加检查信息
     *
     * @param checks 检查信息
     * @return 返回操作结果
     */
    @RequestMapping("addCheck")
    @ResponseBody
    public ResponseData addCheck(Checks checks) {
        System.out.println("[addCheck] 请求开始，时间：" + System.currentTimeMillis() + "，checks：" + checks);
        // 调用 checkService 中的 addCheck 方法增加检查信息
        Boolean bo = this.checkService.addCheck(checks);
        if (bo) {
            return ResponseData.success("增加检查信息成功");
        }
        return ResponseData.fail("增加检查信息失败！账号或已被占用");
    }

    /**
     * 删除检查信息
     *
     * @param chId 检查ID
     * @return 返回操作结果
     */
    @RequestMapping("deleteCheck")
    public ResponseData deleteCheck(@RequestParam(value = "chId") int chId) {
        System.out.println("[deleteCheck] 请求开始，时间：" + System.currentTimeMillis() + "，chId：" + chId);
        // 调用 checkService 中的 deleteCheck 方法删除检查信息
        Boolean bo = this.checkService.deleteCheck(chId);
        if (bo) {
            return ResponseData.success("删除检查信息成功");
        }
        return ResponseData.fail("删除检查信息失败");
    }

    /**
     * 修改检查信息
     *
     * @param checks 修改后的检查信息
     * @return 返回修改结果
     */
    @RequestMapping("modifyCheck")
    @ResponseBody
    public ResponseData modifyCheck(Checks checks) {
        System.out.println("[modifyCheck] 请求开始，时间：" + System.currentTimeMillis() + "，checks：" + checks);
        // 调用 checkService 中的 modifyCheck 方法修改检查信息
        this.checkService.modifyCheck(checks);
        return ResponseData.success("修改检查项目信息成功");
    }


}
